💡 Mekanisme Kerja Sistem Penjualan
1. Master Data (Input Satu Kali / Jarang Diubah)
Ini wajib diisi terlebih dahulu sebelum transaksi:

kategori: Jenis barang (contoh: Minuman, Makanan Ringan).

satuan: Satuan produk (pcs, botol, dus, dll).

barang: Produk yang dijual, termasuk harga beli/jual, stok minimal, kategori, dan foto.

supplier: Pemasok barang.

pelanggan: Pelanggan tetap (untuk yang bayar tempo/hutang).

toko: Cabang tempat jualan.

pengguna: User/karyawan (kasir, admin, gudang, dll).

metode_pembayaran: Tunai, Transfer, QRIS, dll.

role + hak_akses: Akses modul per user.

2. Alur Pembelian Barang (Dari Supplier ke Toko)
Input pembelian:

Tabel: pembelian

Isinya: barang apa, dari siapa (supplier), ke toko mana, total pembelian, diskon, PPN, status bayar (lunas/hutang).

Rincian barang pembelian:

Tabel: detail_pembelian

Otomatis menambahkan stok ke stok_toko lewat trigger.

Jika belum lunas, dicatat di:

hutang_supplier

pembayaran_hutang_supplier (jika dibayar belakangan).

3. Alur Penjualan Barang (Dari Toko ke Pelanggan)
Input transaksi penjualan:

Tabel: penjualan

Isinya: ke pelanggan siapa, dari toko mana, total, diskon, PPN, metode pembayaran.

Detail barang yang dijual:

Tabel: detail_penjualan

Jika pelanggan belum bayar lunas:

hutang_pelanggan

pembayaran_hutang (kalau dibayar belakangan).

4. Manajemen Stok
stok_toko: Menyimpan stok per toko.

penyesuaian_stok: Untuk koreksi jika stok tidak sesuai.

mutasi: Barang dipindah antar toko.

detail_mutasi: Barang apa saja yang dipindah.

5. Promo dan Diskon
promo: Info promo yang sedang aktif.

promo_barang: Barang yang termasuk promo tersebut.

6. Lain-Lain
biaya_operasional: Listrik, gaji, sewa toko.

jadwal_karyawan: Shift karyawan.

audit_log: Log perubahan data.

backup_history: Catatan backup database.

notifikasi: Info seperti stok menipis, hutang lunas, dll.

🧭 Urutan Ideal Pengisian Data
Biar tidak error, kamu bisa isi datanya dengan urutan ini:

Data master:

kategori, satuan, barang, supplier, toko, pengguna, pelanggan, metode_pembayaran

Transaksi pembelian:

pembelian → detail_pembelian → akan update stok_toko

Transaksi penjualan:

penjualan → detail_penjualan → akan mengurangi stok_toko

Hutang jika belum lunas:

hutang_supplier, pembayaran_hutang_supplier

hutang_pelanggan, pembayaran_hutang

Retur & Mutasi:

retur_pembelian, retur_penjualan, mutasi